"""
类的对象

参考文档：https://docs.python.org/zh-cn/3/tutorial/classes.html#class-definition-syntax

在定义好类的属性之后，我们便可以创建类的对象，也就是所说的变量；

创建对象之后，肯定少不了属性的初始化操作
"""

def testClassObject():
    """
    类对象支持两种操作：
        属性引用
        实例化

    属性引用的标准语法为
        obj.name
    
    类的实例化表示方法
        val = class()
    

    """

    # 定义一个简单类
    class Stu:
        """
        Student类的简单定义
        """
        attr = "student"

        def get__attr(this):
            return this.attr

        def say():
            print("I am a student")
    
    print("Stu.attr is {}".format(Stu.attr))

    # __doc__也是一个合法的属性，返回类的文档描述
    print("Stu.__doc__ is {}".format(Stu.__doc__))

    # 类的属性也可以赋值
    Stu.attr = "teacher"
    print("Stu.attr is {}".format(Stu.attr))


    # 实例化操作会创建一个空对象
    # 很多类创建对象的时候都喜欢调用特定初始状态的函数，名为__init__()
    # __init__()也可以带实际参数

    # 创建一个带有构造函数的类
    class Circle:
        """
        带有构造函数的类
        """

        def __init__(self, name, age):
            self.name = name
            self.age = age
        
        def getName(self):
            return self.name

        def getAge(self):
            return self.age

    # 调用构造函数创建实例
    r = Circle("AA", "12")

    print("r.age = {0}, r.name = {1}".format(r.getAge(), r.getName()))

testClassObject()


        